package com.xianggu.designMode.combination.demo02;

import com.xianggu.designMode.combination.demo02.impl.MoveCommand;
import com.xianggu.designMode.combination.demo02.impl.RotateCommand;

// ================ 客户端调用 ================
public class Client {
    public static void main(String[] args) {
        Graphic graphic1 = new Graphic();
        Graphic graphic2 = new Graphic();

        // 创建组合命令：移动图形1并旋转图形2
        CompositeCommand macroCmd = new CompositeCommand();
        macroCmd.addCommand(new MoveCommand(graphic1, 10, 20));
        macroCmd.addCommand(new RotateCommand(graphic2, 45));

        // 执行宏命令
        System.out.println("----- 执行宏命令 -----");
        macroCmd.execute();  
        // 输出：
        // 图形移动到 (10, 20)
        // 图形旋转至 45.0 度

        // 撤销宏命令
        System.out.println("\n----- 撤销宏命令 -----");
        macroCmd.undo();     
        // 输出：
        // 图形旋转至 0.0 度
        // 图形移动到 (0, 0)
    }
}